//
//  HomeTableViewController.swift
//  Sina
//
//  Created by yuanyuan on 15/12/17.
//  Copyright © 2015年 yuanyuan. All rights reserved.
//

import UIKit
//在不同的项目中需要导入不同的命名空间
import AFNetworking
import SVProgressHUD

private let HomeCellId = "HomeCellId"

class HomeTableViewController: BaseTableViewController {

    
    private lazy var statuses = [Status]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        if  !userLogin {
//       没有登陆的话显示访客视图
    visitorLoginView?.setupInfo("登录后，别人评论你的微博，发给你的消息，都会在这里收到通知", imageName: nil)
//       没有return 的话报错 必须执行return
            return
            
        }
//        设置tableview
        
        prepareTableView()
        loadData()
    }

    private func prepareTableView() {
//    1.注册tableview 
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        //修改rtableView固定高度
        //希望 tableView能够自动计算行高  需要设置两个关键的属性
        //1.设置预估行高  尽量的接近真实的行高 能够提高效率
        //tabelView能够自动计算行高 关键条件之一 就是 contentView必须添加约束
    
    tableView.estimatedRowHeight = 300
//        2.设置自动行高
        tableView.rowHeight = UITableViewAutomaticDimension
        //设置分割线的样式
        tableView.separatorStyle = .None
  
        
    }
    
 private func loadData() {
    
////        实现网络请求
//       let AFN = AFHTTPSessionManager()
////      get请求
//        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
//        // 200:表示成功
//        //failed: unacceptable content-type: text/html 表示反序列化错误  使用 AFN最常见的错误 没有之一
//        // 默认支持解析 @"application/json", @"text/json", @"text/javascript"
//        AFN.responseSerializer.acceptableContentTypes?.insert("text/html")
////        判断token是否为空
//        guard let token = UserAccountViewModel().token else {
//        print("token为空")
//            SVProgressHUD.showInfoWithStatus("请重新登陆")
//            return
//        
//        }
//        let parameters = ["access_token":token]
//////        显示指示器
////        SVProgressHUD.show()
//        AFN.GET(urlString, parameters: parameters, success: { (_, result) -> Void in
////           关闭指示器
////            SVProgressHUD.dismiss()
////            print(result)
////            需要判断result是否为空
//            if let dict = result as? [String:AnyObject] {
//            
////            数据获取成功
//                //通过的键值的方式 获取 statuses对应的数组
//                if let array = dict["statuses"] as? [[String : AnyObject]] {
//                    print(array)
//                    //TODO: 遍历数组中 所有的字典 做字典转模型的操作
//                    var list = [Status]()
//                    for item in array {
//                    
//                        let s = Status(dict: item)
//                        list.append(s)
//                    
//                    }
//                    self.statuses = list
////                    刷新表视图
//                    self.tableView.reloadData()
//                    
//                }
//            }
//            }) { (_, error) -> Void in
//                
//                
//             print(error)
//                
//        }
//    
//    
//    }
    
    //使用viewmodel获取网络数据
    StatusListViewModel.loadHomePageData { (statuses) -> () in
        guard let list = statuses else {
            return
        }
        
        self.statuses = list
        
        //执行刷新
        self.tableView.reloadData()
    }
    }
    


}



//  tableview数据源方法
extension HomeTableViewController {
    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        
        return statuses.count
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        //iOS 6.0 推出的方法  一定可以获取一个cell对象  xib/sb中不需要手动注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath) as! StatusCell
//        cell.textLabel?.text = statuses[indexPath.row].user?.name
        cell.status = statuses[indexPath.row]
        print(statuses[indexPath.row].retweeted_status?.text)
        return cell
        
        
    }

}











